package com.bascker.algorithm.practice.sliding_window.easy.find_max_consecutive_one;

import java.util.Objects;

// 计数器解法: 时间复杂度：O(n); 空间复杂度：O(1)
public class Solution2 {

    // nums 为二进制数组，所以数组中只包含 0 和 1
    public int findMaxConsecutiveOnes(int[] nums) {
        // max 标记最大连续1的个数
        int max = 0;
        if (Objects.isNull(nums) || nums.length < 1) {
            return max;
        }

        // 使用计数器 count，标记 连续1 的个数
        int count = 0;
        for (int x : nums) {
            // 遇到 1 时，count 加一
            if (x == 1) {
                count++;
            }
            //遇到 0 时，比较 max 和 count 的大小，取最大值赋值给 max，并重置标记位 count 为 0（因为此时不连续了）
            else {
                max = Math.max(max, count);
                count = 0;
            }
        }

        // 此处必须再次比较
        return Math.max(max, count);
    }

}
